package com.rui.factory.simple.model;

import com.rui.factory.obj.Americano;
import com.rui.factory.obj.Cappuccino;
import com.rui.factory.obj.Coffee;
import com.rui.factory.obj.Mocha;

/**
 * 工厂类
 */
public class CoffeeFactory {

    /**
     * 使用反射创建对象
     * 加一个static变为静态工厂
     *
     * @param clazz
     * @return
     * @throws Exception
     */
    public static Coffee create(Class<? extends Coffee> clazz) throws Exception {
        if (clazz != null) {
            return clazz.newInstance();
        }
        return null;
    }

    /**
     * 根据类型构建对象
     *
     * @param type
     * @return
     */
    public static Coffee create(String type) {
        if ("americano".equals(type)) {
            return new Americano();
        }
        if ("mocha".equals(type)) {
            return new Mocha();
        }
        if ("cappuccino".equals(type)) {
            return new Cappuccino();
        }
        return null;
    }
}